function myNew(fn, ...args) {
  const _this = Object.create(fn.prototype),
    res = fn.call(_this, ...args);

  // 如果函数返回一个对象，则new操作符返回该对象
  if (res && (typeof res === "object" || typeof res === "function")) {
    return res;
  }

  // 否则返回new操作符新建的_this对象
  return _this;
}

//用法如下：
// function Person(name, age) {
//   this.name = name;
//   this.age = age;
// }
// Person.prototype.say = function() {
//   console.log(this.age);
// };
// const p1 = myNew(Person, "lihua", 18);
// console.log(p1.name);
// console.log(p1);
// p1.say();
